package com.vic.mesage_ack;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import com.vic.utils.RabbitmqUtils;

/**
 * 消费者2
 */
public class Consumer02 {

    public static void main(String[] argv) throws Exception {
        Channel channel = RabbitmqUtils.getChannel();

        // 消息处理
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            // 参数一：deliveryTag:消息应答标记。
            // 参数二：multiple:(false、只应答接收到的那个消息 true、应答所有传递过来的消息)。
            // 处理完逻辑之后应答 ack
            channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
            System.out.println("接收到消息: " + message);
        };

        System.out.println("T2工作线程等待接收消息...");

        // 手动应答
        boolean autoAck = false;
        channel.basicConsume(Consts.QUEUE_NAME, autoAck, deliverCallback, consumerTag -> {
            System.out.println(consumerTag);
        });
    }
}